Memory devices are typically provided as internal, semiconductor, integrated circuits and/or external removable devices in computers or other electronic devices. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data and can include random-access memory (RAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM), among others. Non-volatile memory can provide persistent data by retaining stored data when not powered and can include NAND flash memory, NOR flash memory, read only memory (ROM), and resistance variable memory such as phase change random access memory (PCRAM), 3D Phase Change Material and Switch (PCMS), resistive random access memory (RRAM), magnetic random access memory (MRAM), and programmable conductive memory, among others.
Memory devices can be combined together to form a solid state drive (SSD). An SSD can include non-volatile memory (e.g., 3D PCMS, NAND flash memory and/or NOR flash memory), and/or can include volatile memory (e.g., DRAM and/or SRAM), among various other types of non-volatile and volatile memory. Flash memory devices can include memory cells storing data in a charge storage structure such as a floating gate, for instance, and may be utilized as non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption.
Memory cells in an array architecture can be programmed to a target (e.g., desired) data state. For example, a single level cell (SLC) can be programmed to a targeted one of two different data states, which can be represented by the binary units 1 or 0. Some memory cells can be programmed to a targeted one of more than two data states (e.g., 1111, 0111, 0011, 1011, 1001, 0001, 0101, 1101, 1100, 0100, 0000, 1000, 1010, 0010, 0110, and 1110). Such cells may be referred to as multi state memory cells, multiunit cells, or multilevel cells (MLCs). MLCs can provide higher density memories without increasing the number of memory cells since each cell can represent more than one digit (e.g., more than one bit).
Various internal and/or external mechanisms, however, may cause an error to occur when the state of a memory cell is sensed (e.g., read). For example, such mechanisms may cause memory cells to be sensed to be in a state other than the target state (e.g., a different data state than the data state to which the cell was programmed). This may reduce the quality of the data stored in the memory, which may decrease the lifetime of the memory and/or cause the memory to fail, if corrective actions are not taken.
Error detection and correction schemes such as, for instance, error correction code (ECC) schemes and/or redundant array independent disc (RAID) schemes, can be utilized to correct such errors. However, the capabilities of such schemes may be limited. For instance, such schemes may only be capable of detecting and correcting a certain (e.g., finite) quantity (e.g., number or distribution) of erroneous data; if this limit is exceeded, the erroneous data may not be correctable, and may become corrupted and/or lost.